package com.zhangshanfeng.polymorphism.lambda;
/*
- 有参有返回值抽象方法的练习

- 操作步骤

  - 定义一个接口(Addable)，里面定义一个抽象方法：int add(int x,int y);
  - 定义一个测试类(AddableDemo)，在测试类中提供两个方法
    - 一个方法是：useAddable(Addable a)
    - 一个方法是主方法，在主方法中调用useAddable方法

省略的规则

- 参数类型可以省略。但是有多个参数的情况下，不能只省略一个
- 如果参数有且仅有一个，那么小括号可以省略
- 如果代码块的语句只有一条，可以省略大括号和分号，和return关键字


- 使用Lambda必须要有接口
- 并且要求接口中有且仅有一个抽象方法




 */
public class AddableDemo {
    public static void main(String[] args) {
        useAddable(new Addable() {//匿名内部类对象
            @Override
            public int add(int x, int y) {
                return x + y;
            }
        });
        useAddable((x,y)->{//代码块的语句只有一条，可以省略大括号和分号，和return关键字
            return x + y;
        });
        useAddable((x,y)->//省略大括号和分号，和return关键字
             x + y
        );


    }
    public static void useAddable(Addable a){
        int add = a.add(6, 6);
        System.out.println(add);
    }


}

interface Addable{
    int add(int x,int y);
}
